using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
    public class HocPhanMap : EntityTypeConfiguration<HocPhan>
    {
        public HocPhanMap()
        {
            // Khoá chính
            this.HasKey(t => t.MaHocPhanGUID);

            // Các cột
            this.Property(t => t.MaHocPhanGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaHocPhan)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.TenHocPhan)
                .IsRequired()
                .HasMaxLength(255);

            //this.Property(t => t.LoaiHocPhan)
            //    .IsRequired()
            //    .HasMaxLength(255);

            this.Property(t => t.HinhThucHoc)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.HinhThucThi)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.MaDonViPhuTrachGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.GhiChu)
                .HasMaxLength(255);

            // Ánh xạ Property của POCO vào Column của Table
            this.ToTable("HocPhan");
            this.Property(t => t.MaHocPhanGUID).HasColumnName("MaHocPhanGUID");
            this.Property(t => t.MaHocPhan).HasColumnName("MaHocPhan");
            this.Property(t => t.TenHocPhan).HasColumnName("TenHocPhan");
            //this.Property(t => t.LoaiHocPhan).HasColumnName("LoaiHocPhan");
            this.Property(t => t.HinhThucHoc).HasColumnName("HinhThucHoc");
            this.Property(t => t.HinhThucThi).HasColumnName("HinhThucThi");
            this.Property(t => t.MaDonViPhuTrachGUID).HasColumnName("MaDonViPhuTrachGUID");
            this.Property(t => t.HeSoDiemQTHT).HasColumnName("HeSoDiemQTHT");
            this.Property(t => t.SoTinChi).HasColumnName("SoTinChi");
            this.Property(t => t.TongSoGio).HasColumnName("TongSoGio");
            this.Property(t => t.GhiChu).HasColumnName("GhiChu");

            // Các quan hệ
            this.HasRequired(t => t.DonVi)
                .WithMany(t => t.ListHocPhan)
                .HasForeignKey(d => d.MaDonViPhuTrachGUID);

        }
    }
}
